iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
0

20191001

前言

在前面的文章中,我們建立了HelloWorld專案,今天的內容與前面一樣簡單,不過採用xib的方式來實現。
會想寫這一篇文章,是因為之前在看iOS App開發的相關工作,看到有些公司會要求一律使用Xib,不使用storyboard,因此寫了這一篇文章做個紀錄。

現在,我們馬上開始!

練習過程

建立一個HelloWord專案

這邊的內容都與Day13相同,只是專案名稱我們改為HelloWorldXib以作區別。

建立專案請參考Day13
https://ithelp.ithome.com.tw/articles/10221914

專案相關設定與建立xib

  1. 將專案中的Main Interface清空 (原本是Main)

  2. 將原本的info.plist中的『Storyboard Name』整個刪除

  3. 刪除Main.storyboard檔案

  4. 刪除ViewController.swift (可略過)

建立XIB檔案

  1. 建立一個新的xib檔案,使用快速鍵『cmd + N』新增檔案
    ,選擇Cocoa Touch Class

  2. 輸入檔案名稱,記得『Also create XIB file』要勾選

  3. 選擇檔案路徑,按下Create

到此已經建立XIB檔與ViewController.swift檔

  • 在XIB檔內加入label的UI相關部分,以及之前的程式碼,請參考前面文章,這邊就不再說明

程式碼調整

由於程式啟動時,還不知道我們的初始畫面為HelloViewController.xib,因此,我們的程式碼要做些調整

AppDelegate程式碼部分

// iOS12 & before work
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        let rootVC = HelloViewController(nibName: String(describing: HelloViewController.self), bundle: nil)

        window = UIWindow(frame: UIScreen.main.bounds)
        window?.rootViewController = rootVC
        window?.makeKeyAndVisible()
        
        return true
    }
  • 首先建立一個HelloViewController

  • 建立一個UIWindow

  • 並將根視圖設定為rootVC

  • 此修改僅適用iOS12 & before適用

修改 SceneDelegate.swift (for iOS13)

//guard let _ = (scene as? UIWindowScene) else { return }

// 將上面的上面註解的程式碼,修改為以下程式碼
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {        
    guard let windowScene = (scene as? UIWindowScene) else { return }
        
    let rootVC = HelloViewController(nibName: String(describing: HelloViewController.self), bundle: nil)
    let navController = UINavigationController(rootViewController: rootVC)
        
    window = UIWindow(frame: windowScene.coordinateSpace.bounds)
    window?.windowScene = windowScene
    window?.rootViewController = navController //navController
    window?.makeKeyAndVisible()
}

啟動專案

看到與前一天文章,同樣的畫面,以及朗讀Hello, World

到這邊,恭喜各位讀者已完成今日的進度。 (為自己鼓掌)

總結

在今天的文章裡,我們介紹了xib作為啟動後的初始畫面,並且移除了Main.storyboard,一開始練習時有點卡關,後來參考了ref4的影片才順利完成。而今天的練習又有分iOS12 / iOS13的兩種版本,請讀者依照需求自行使用。
今天的內容就到這邊,感謝讀者們的閱讀。


Github:

https://github.com/chiron-wang/IT30_11

參考資料與延伸閱讀

  1. 彼得潘的 Swift iOS App 開發問題解答集
    https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94%E9%9B%86

  2. iOS 13 & Swift 5 - The Complete iOS App Development Bootcamp - Angela Yu
    https://www.udemy.com/course/ios-13-app-development-bootcamp/

  3. 深入淺出 iPhone 開發 (使用 Swift4) - WeiWei
    https://www.udemy.com/course/iphone-swift4/

  4. 心智圖軟體Xmind
    https://www.xmind.net/

  5. Xcode 11 - Create a New Project - No Storyboard - Sean Allen
    https://www.youtube.com/watch?v=Htn4h51BQsk

  6. Swift 起步走 集合型別
    https://itisjoe.gitbooks.io/swiftgo/content/ch1/collection_types.html


上一篇
Day14 在Swift的世界中朗誦HelloWorld(2)
下一篇
Day16 當SwiftUI遇到石虎抱抱
系列文
iOS App 實作開發新手村36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言